package com.hyc.config;

import com.hyc.message.RpcResponse;
import io.github.resilience4j.retry.Retry;
import io.github.resilience4j.retry.RetryConfig;
import io.github.resilience4j.retry.RetryRegistry;

import java.time.Duration;

/**
 * @author 冷环渊
 * 重试
 * @date 2025/6/12 18:52
 * @description RetryConfig
 */
public class Resilience4jRetryConfig {
    public static Retry GetRetryTemplate() {
        RetryConfig retryConfig = RetryConfig.custom()
                //最大重试次数
                .maxAttempts(3)
                //时间间隔
                .waitDuration(Duration.ofSeconds(3))
                //当 RPC 响应的状态码为 500 时，记录为失败。
                .retryOnResult(response -> ((RpcResponse) response).getCode() == 500)
                .retryExceptions(Exception.class)
//                .failAfterMaxAttempts(true)
                .build();

        //放入注册表
        return RetryRegistry.of(retryConfig).retry("pinhaoRpcRetry");
    }
}
